<?php
////////////////////////////////////////////////////////////////////////////
//                                                                        //
// NOTICE OF COPYRIGHT                                                    //
//                                                                        //
// Dean`s Office for Moodle                                               //
// Электронный деканат                                                    //
// <http://deansoffice.ru/>                                               //
//                                                                        //
// Copyright (C) 2008-2999  Alex Djachenko (Алексей Дьяченко)             //
// alex-pub@my-site.ru                                                    //
// Copyright (C) 2008-2999  Evgenij Cigancov (Евгений Цыганцов)           //
// Copyright (C) 2008-2999  Ilia Smirnov (Илья Смирнов)                   // 
// Copyright (C) 2008-2999  Mariya Rojayskaya (Мария Рожайская)           // 
//                                                                        //
// This program is free software: you can redistribute it and/or modify   //
// it under the terms of the GNU General Public License as published by   //
// the Free Software Foundation, either version 3 of the Licensen.        //
//                                                                        //
// This program is distributed in the hope that it will be useful,        //
// but WITHOUT ANY WARRANTY; without even the implied warranty of         //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          //
// GNU General Public License for more details.                           //
//                                                                        //
// You should have received a copy of the GNU General Public License      //
// along with this program.  If not, see <http://www.gnu.org/licenses/>.  //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

//загрузка библиотек верхнего уровня
require_once(dirname(realpath(__FILE__))."/../lib.php");

// Тип отчета
$reporttype = optional_param('type', 'loadteachers', PARAM_TEXT);

switch ($reporttype)
{
    case 'loadteachers':   $pagetitle = $DOF->get_string('report_actual_load', 'journal'); break;
    case 'replacedevents': $pagetitle = $DOF->get_string('report_replacedevents', 'journal'); break;
}
$DOF->modlib('nvg')->add_level($pagetitle, $DOF->url_im('journal','/reports/index.php', $addvars+array('type'=>$reporttype)));



/* Возвращает html-код легенды назначения столбцов
 * @return string 
*/
function im_journal_legend()
{
    GLOBAL $DOF;
    return '<b>'.$DOF->get_string('legend', 'journal').':</b><br>
       - '.$DOF->get_string('legend_week_tabel_load', 'journal').';<br>
       - '.$DOF->get_string('legend_week_fix_load', 'journal').';<br>
       - '.$DOF->get_string('legend_plan_load', 'journal').';<br>
       - '.$DOF->get_string('legend_execute_load', 'journal').';<br>
       - '.$DOF->get_string('legend_replace_postpone_events', 'journal').';<br>
       - '.$DOF->get_string('legend_cancel_events', 'journal').';<br>
       - '.$DOF->get_string('legend_salfactors', 'journal').'.<br><br>';
}


/*
 * Метод, который реализует импорт данных ф формате xls,
 * используя API moodle
 * @param array $data - сложный массив в массиве
 */
function otech_doffice_xls_table($data)
{
	global $CFG;
	require_once("$CFG->libdir/excellib.class.php");
	$workbook = new MoodleExcelWorkbook("-");
	foreach ($data as $tablename=>$tabledata)
	{
		$table = $workbook->add_worksheet($tablename);
		$num_row = 0;
		$num_col = 0;
		foreach ($tabledata as $row)
		{
			foreach ($row as $cell)
			{
				$table->write_string($num_row,$num_col,$cell);
				++$num_col;
			}
			$num_col = 0;
			++$num_row;
		}
	}
	return $workbook;
}

/**
 *
 * @param int $appointmentid
 */
function dof_im_journal_get_loadteacher($appointmentid, $begindate, $enddate)
{
    global $DOF;
    $teacher = new stdClass();
    
    $a = new stdClass();
    $a->begindate = dof_userdate($begindate, '%d.%m.%Y'); 
    $a->enddate = dof_userdate($enddate, '%d.%m.%Y');
    $teacher->title = $DOF->get_string('loadteacher_title','journal',$a);
    
    if ( $person = $DOF->storage('appointments')->get_person_by_appointment($appointmentid) )
    {// если есть есть персона - выведем имя
        $teacher->fullname = $DOF->storage('persons')->get_fullname($person->id);
    }else
    {
        $teacher->fullname = '';
    }
    
    $teacher->column_date = $DOF->get_string('loadteacher_date', 'journal');
    $teacher->column_time = $DOF->get_string('loadteacher_time', 'journal');
    $teacher->column_duration = $DOF->get_string('loadteacher_duration', 'journal');
    $teacher->column_individual = $DOF->get_string('loadteacher_individual', 'journal');
    $teacher->column_countstudents = $DOF->get_string('loadteacher_countstudents', 'journal');
    $teacher->column_salfactor_programmitem = $DOF->get_string('loadteacher_programmitem', 'journal');
    $teacher->column_salfactor_students = $DOF->get_string('loadteacher_students', 'journal');
    $teacher->column_salfactor_cstream  = $DOF->get_string('loadteacher_cstream', 'journal');
    $teacher->column_salfactor_schtemplate = $DOF->get_string('loadteacher_schtemplate', 'journal');
    $teacher->column_salfactor_agroup = $DOF->get_string('loadteacher_agroup', 'journal');
    $teacher->column_ahours = $DOF->get_string('loadteacher_ahours', 'journal');
    
    // суммарный коэффициент и формула расчета
    $formula = str_replace('*', '&#013;*', $DOF->storage('config')->get_config_value('salfactors_calculation_formula', 'storage', 
            'cstreams', optional_param('departmentid', 0, PARAM_INT)) ); 
    
    $ftitle = $DOF->get_string('loadteacher_formula', 'journal') . $formula;
    
    $teacher->column_rhours = $DOF->get_string('loadteacher_rhours', 'journal') 
                            ."<br><span title='".$ftitle."'>&fnof;</span>";
    $totalrhours = 0;
    $totalfhours = 0;
    $teacher->loaddata = array();
    if ( $records = $DOF->storage('schevents')->get_records(array(
            'appointmentid' => $appointmentid), 'date') )
    {
        foreach($records as $schevent)
        {
            $params = unserialize($schevent->salfactorparts);
            $params = $params->vars;
            if ( isset($params) AND ! empty($params) )
            {
                $obj = new stdClass();
                // число
                $obj->date = dof_userdate($schevent->date, "%d/%m/%Y");
                
                // время
                $obj->time = dof_userdate($schevent->date, "%H:%M");
                
                // прдолжительность урока
                $obj->duration = date("H:i",$schevent->duration);
                $totalfhours += $schevent->duration;
                
                $obj->individual = $DOF->get_string('no', 'journal');
                if ($params['schevent_individual'])
                {// индивидуальный урок
                    $obj->individual = $DOF->get_string('yes', 'journal');
                }
                
                // количество студентов
                $obj->countstudents = $params['count_all_cpassed'];
                
                // поправочный зарплатный коэффициент предмета
                $obj->salfactor_programmitem = $params['programmitem_salfactor'];
                
                // поправочный зарплатный коэффициент подписок
                $obj->salfactor_programmsbc = $params['programmitem_salfactor'];
                
                // поправочный зарплатный коэффициент потока
                $obj->salfactor_cstreams = $params['cstreams_salfactor'];
                
                // поправочный зарплатный коэффициент шаблона
                $obj->salfactor_schtemplates = $params['schtemplates_salfactor'];
                
                // поправочный зарплатный коэффициент групп
                $obj->salfactor_agroups = $params['agroups_salfactor'];
                
                // академические часы
                $obj->ahours = $params['ahours'];
                
                // суммарный балл
                $obj->rhours = $schevent->rhours;
                $totalrhours += intval($obj->rhours);
            
                // добавляем строку в таблицу
                $teacher->loaddata[] = $obj;
            }
        }
        if ( ! empty($teacher->loaddata) )
        {// в таблице есть записи - добавим итог
            $score = new stdClass();
            $teacher->score = $DOF->get_string('loadteacher_score', 'journal');
            // фактические часы
            $teacher->totalfhours = dof_userdate($totalfhours, "%H:%M");;
            // сумма баллов
            $teacher->totalrhours = $totalrhours;
        } 
        
    }
    return $teacher;
}
    


?>